//********************************************************************************************************************//
//ORGANIZATION:
//AUTHOR: bpeng(bogers.peng@gmail.com)
//SUMMARY:
//********************************************************************************************************************//
#ifndef NATIVE_SYSTEM_BASE_INVOKINGEXCEPTION_H
#define NATIVE_SYSTEM_BASE_INVOKINGEXCEPTION_H

#ifndef NATIVE_SYSTEM_BASE_EXCEPTION_H
#include "System/Base/Exception.h"
#endif

namespace Native { namespace System
{
    //****************************************************************************************************************//
    //CInvokingException
    //
    //****************************************************************************************************************//
    NATIVE_DECLARE_CONST_OBJECT(CInvokingException, C_INVOKE_METHOD_EXCEPTION);
    class NATIVE_LIBRARY_EXPORT CInvokingException :
        public CException
    {
        NATIVE_DECLARE_OBJECT;

    protected:
        CInvokingException();
    public:
        CInvokingException(C_INVOKE_METHOD_EXCEPTION& that);
        CInvokingException(C_INVOKE_METHOD_EXCEPTION&& that);
        CInvokingException(
            C_SCENE& scene,
            WSTRING& name,
            WSTRING& arguments = EMPTY_STRING,
            WSTRING& detail = EMPTY_STRING);
    };
}}

#endif